package com.example.housingRentalSystem.security;

import java.security.SecureRandom;
import java.util.Base64;

public class JwtKeyGenerator {

    public static void main(String[] args) {
        // 1. 生成 32 字节（256位）安全随机数
        byte[] keyBytes = new byte[32];
        new SecureRandom().nextBytes(keyBytes); // 使用密码学安全随机数生成器

        // 2. 转换为 Base64 字符串
        String base64Key = Base64.getEncoder().encodeToString(keyBytes);

        // 3. 输出结果
        System.out.println("生成的 JWT 密钥:");
        System.out.println(base64Key);

        // 4. 验证密钥格式（可选）
        validateKey(base64Key);
    }

    private static void validateKey(String base64Key) {
        // 验证长度应为 44 字符（32字节的Base64编码）
        if (base64Key.length() != 44) {
            System.err.println("警告：密钥长度异常！应为44字符，实际为：" + base64Key.length());
        }

        // 验证是否包含非法字符
        if (!base64Key.matches("^[A-Za-z0-9+/]+={0,2}$")) {
            System.err.println("警告：密钥包含非法Base64字符！");
        }

        // 解码验证字节长度
        byte[] decoded = Base64.getDecoder().decode(base64Key);
        if (decoded.length != 32) {
            System.err.println("严重错误：解码后长度应为32字节，实际为：" + decoded.length);
        } else {
            System.out.println("验证通过：密钥有效");
        }
    }
}
